package com.mmall.concurrency.singleton;

import com.mmall.concurrency.annotations.NotRecommend;
import com.mmall.concurrency.annotations.NotThreadSafe;
import com.mmall.concurrency.annotations.ThreadSafe;
import lombok.extern.slf4j.Slf4j;

/**
 * 懒汉模式
 * 单例实例在第一次使用时候创建
 */
@Slf4j
@ThreadSafe
@NotRecommend
public class Singleton3 {
    // 私有构造函数
    private Singleton3(){

    }

    // 单例对象
    private static Singleton3 instance = null;

    // 静态工厂类获取实例 --  19行两个线程同时执行时候不安全
    public static synchronized Singleton3 getInstance(){
        if (instance == null){
            instance = new Singleton3();
        }
        return instance;
    }
}
